/*!
 *  \file       ParametricSignalGenerator.hpp
 *  \brief      Definizione della classe \c ParametricSignalGenerator
 *  \author     Davide Scola <S2299453@studenti.unige.it>
 *  \author	Minetti Alberto <S3064777@studenti.unige.it>
 *  \version    1.0
 *
 */

#ifndef _PARAMETRIC_SIGNAL_GENERATOR_H
#define _PARAMETRIC_SIGNAL_GENERATOR_H

/*!
 *  \brief      Definizione della classe \c ParametricSignalGenerator
 *
 * Questa classe identifica un segnale descritto da
 * \f$S_x = 1 + 2 \sqrt{ ( T^{ 2 } - t^{ 2 } ) }\f$
 */
template< class tType, unsigned long int T >
class ParametricSignalGenerator : public ISignalGenerator< tType > {
  public :
    ParametricSignalGenerator( const unsigned long int );
    ParametricSignalGenerator( ParametricSignalGenerator< tType, T > const& );
    
    virtual ParametricSignalGenerator& operator=( const ParametricSignalGenerator& );
    
    // interface methods
    virtual tType operator() ( void );
    
  private :
    tType currPoint_,	/*!< Punto corrente nel calcolo della funzione */
	  iStep_;	/*!< Incremento tra i punti della funzione */
};

#endif              /* _PARAMETRIC_SIGNAL_GENERATOR_H */
